<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>冒泡排序</title>
    <script>
        /* 
        
        
        */
//  有一个数组  arr=[9,1,2,8,0,7,6,5,4,3]将这个数组里的元素升序排列。


    //  思路1，比较数组之间相邻的两个元素，根据大小决定是否交换位置。总共排length-1次就可以全部排完（冒泡排序）
    arr=[9,1,2,8,0,7,6,5,4,3]
    fn1=(array)=>{
        arr=[...array]
        for (let j=0;j<arr.length-1;j++){
            for (let i=0;i<arr.length-1-j;i++){
                if(arr[i]>arr[i+1]){
                    //  交换两个值之间的位置
                    let c=arr[i]
                    arr[i]=arr[i+1]
                    arr[i+1]=c
                }
            }
        } 
        return arr
    }

    console.log(fn1(arr))
    
//冒泡排序是最慢的排序方式，不适用于数据量较大的排序

    //  思路2：取出一个元素，然后将该元素与其它元素进行比较，如果其它元素比该元素小，则交换两个元素之间的位置。（选择排序）
    arr=[9,1,2,8,0,7,6,5,4,3] 
    fn2=(array)=>{
        arr=arr.slice()//arr=[...array]
        for (i=0;i<arr.length;i++){
            for (j=i+1;j<arr.length;j++){
                if(arr[i]>arr[j]){
                    let c=arr[i]
                    arr[i]=arr[j]
                    arr[j]=c
                }
            }
        }
        return arr
    }
    console.log(arr)
    console.log(fn2(arr))

    //  sort() 函数用于对数组中的元素进行排序。这个函数默认按照元素的Unicode码点进行排序，因此对于数字和字符串的排序可能会产生意料之外的结果。
    arr=[9,1,2,8,0,7,6,5,4,3]

    const new_array = arr.slice()
    console.log(new_array.sort())
    </script>
</head>
<body>
    
</body>
</html>